package com.hejiale.lease.web.admin.custom.converter;

import com.hejiale.lease.model.enums.LeaseStatus;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

/**
 * 自定义的字符串到枚举类型的转换器。
 * 该转换器用于将字符串类型的请求参数转换为 {@link LeaseStatus} 枚举类型的对象。
 * 默认情况下，Spring MVC 会根据枚举名称进行转换，但这里我们希望根据枚举的 code 属性进行转换。
 */
@Component
public class StringToLeaseStatusConverter implements Converter<String, LeaseStatus> {

    /**
     * 将字符串类型的请求参数转换为 {@link LeaseStatus} 枚举类型的对象。
     *
     * @param code 从请求参数中获取的字符串代码
     * @return 对应的 {@link LeaseStatus} 枚举对象
     * @throws IllegalArgumentException 如果传入的 code 无效，即没有对应的枚举对象
     */
    @Override
    public LeaseStatus convert(String code) {
        // 遍历所有 LeaseStatus 枚举实例
        for (LeaseStatus leaseStatus : LeaseStatus.values()) {
            if (leaseStatus.getCode().equals(Integer.valueOf(code))) {
                return leaseStatus;
            }
        }
        throw new IllegalArgumentException("code 非法");
    }
}
